package leetcode.templates.trees.segment;

public class SegmentTreePart {

	int n;
	int[] tarr = new int[n << 2];
	int[] nums = new int[n];
	boolean[] update = new boolean[n << 2];

	private void build(int o, int l, int r) {
		if (l == r) {
			tarr[o] = nums[l - 1];
		} else {
			int m = ((r - l) >> 1) + l;
			build(o << 1, l, m);
			build(o << 1 | 1, m + 1, r);
			tarr[o] = tarr[o << 1] + tarr[o << 1 | 1];
		}
	}

	private void update(int o, int l, int r, int L, int R) {
		if (L <= l && r <= R) {
			// TODO this.reverse(o, l, r);
		} else {
			int m = ((r - l) >> 1) + l;
			if (update[o]) {
				// TODO
				this.update[o] = false;
			}
			if (L <= m)
				update(o << 1, l, m, L, R);
			if (m < R)
				update(o << 1 | 1, m + 1, r, L, R);
			tarr[o] = tarr[o << 1] + tarr[o << 1 | 1];
		}
	}

}
